תודה.
אגב- יש לי כבר קוד למחרוזת רק העניין שזה ימשיך לבדוק עד שזה יהיה פנוי.
-----------
עבדתי על זה עוד קצת זמן, הקוד הזה תקין?
}
15 תשובות
מאוד לא מומלץ לבצע בדיקה מהסוג הזה מול מסד נתונים משום שכל פעם הוא יעבור מחדש על כל השורות ברגע שלא קיים ה id הזה.
ויש כמובן גם את המקרים שהוא כן ימצא ואז תצטרך להריץ יותר משאילתה אחת.
אז נכון בהתחלה הוא עושה את זה מהר כי יש רק כמה אלפי קבצים אך מה קורה ברגע שיהיו קיימים מיליונים או עשרות מיליונים ?
עדיף לבדוק אם הקובץ קיים במקום בו אתה שומר את הקבצים בצורה הזאת -
$file_name = generateRandomString(10).'.'.$ext;
}while(file_exists('my_files_path/'.$file_name));
שים לב שבמקרה הזה הכנסתי את ext לשם אני ממליץ לך בכללי להוסיף את זה לכתובת ככה שלדוגמא הכתובת שלך תהפוך מ
my_site.com/*key*
ל
my_site.com/*key*.jpeg
ואז בעצם יווצר מצב שאם כבר קיים ה key הזה הוא יתאפשר במידה והם לא חולקים את אותה סיומת.
תודה רבה, יש לי עוד שאלה, אבל לא קשורה לנושא, אם אני רוצה שהקבצים ימחקו כל X שעות / שניות, איך אני יכול לקבוע שזה יקרה באופן קבוע, גם שאני / המשתמש לא באתר?
בעזרת cron job,תיצור בדיקה שרצה על כל הקבצים בתיקיה X ותבדוק מתי הם עודכנו לאחרונה\נוצרו במידה והתאריך גדול מהזמן שהגדרת -> תמחק את הקובץ.
שים לב שבמידה ומדובר בהרבה קבצים זה יכול להגיע למצב שיקח לו זמן לבצע את הפעולה ויכול להיות מצב שעדיף יהיה לך לבצע את זה באמצעות שפה עילית [בהנחה שיש לך vps\שרת]
הבעיה היא שזה לא זמן מוגדר לכל הקבצים, אלא המשתמש בוחר תוך כמה זמן זה ימחק, אפשר עם ה-cron job להריץ קובץ PHP כל כמה זמן (שהוא בעצם ישווה בין הזמן למחיקה והזמן העכשווי וימחק את זה לבד)?
אתה יכול לשמור ב DB את התאריך שבו הקובץ אמור להימחק וב cron job לבדוק אם התאריך כרגע גדול מהתאריך שבו הוא אמור להימחק -> מחק את השורה במסד + מהשרת.
נתקלתי בבעיה די מוזרה: כשאני מפעיל את הקובץ, הכל עובד וכו' שצריך, התמונה מוחלפת (אני מעדיף שזה יהפוך לריבוע ריק מאשר ימחק) ובמסד זה מתעדכן, אבל משום מה כשזה מופעל ב-cron job, המסד מתעדכן אבל התמונה לא נמחקת, אתה אולי יודע מה עלול להיות מקור הבעיה?
אם אתה לא רוצה שזה באמת ימחק מהשרת ,אין צורך לעדכן את הנתונים במסד,פשוט בשליפה של הקובץ תשלוף גם תאריך מחיקה ועם התאריך עבר אז תציג את התמונה שאתה רוצה.
יש מצב שלא הבנתי אותך נכון, אבל אני רוצה להציג את זה באתרים אחרים (פורומים וכדומה), בגלל זה כל הסיבוך.
זה לא בעיה ,תיצור נתיב מזויף באמצעות htaccess [apache?] ובעזרת php תשלח header של תמונה,עכשיו אם התמונה אמורה להימחק מהשרת -> תציג את התמונה בתור התמונה שאתה רוצה,אחרת -> תציג את התמונה המקורית
תודה זה עובד.. אבל עכשיו בעיה שלא נראה לי שיש לה פיתרון- יש אפשרות לשים תמונה כזאת בפייסבוק (בסטטוס) בלי להעלות אותה לשם, זאת אומרת שעדיין תשאר שליטה על התמונה (לאחר ההעלאה הפייסבוק מעלה את זה לשרת שלו, ואז אין לי כלום מה לעשות).
הייתי ממליץ לא ללכת על לולאה כלשהי למציאת מחרוזת רנדומלית, בגלל שזו פעולה שיכולה לקחת הרבה מאוד זמן והמון משאבים, באיחוד אם יעלו הרבה תמונות.
במקום זה, הייתי הולך על יצירת מחרוזת רנדומלית שהיא בוודאות לא בשימוש, למשל בצורה הבאה:
אם לא קריטי לך שהעורך של הנתיב יהיה תמיד 10 תווים - זו דרך שתחסוך לשרת את המשאבים.
ענית לעצמך על התשובה,פייסבוק מעלה את התמונות לשרת שלו על מנת שהוא לא יסתמך על השרת שלך.
גם מבחינת מהירות [לא נראה טוב שפתאום לתמונה לוקח כמה שניות] וגם מהבחינה שאתה שולט על התוכן של התמונה,אתה יכול לדאוג שמשתמשים ממדינה X יראו תמונה פורנוגרפית ומשתמשים ממדינה Y יראו תמונה אחרת לגמרי.
זה לא משנה מה הכוונות שלך הם לא רוצים לתת לך להתעסק להם עם התמונות,אם אתה רוצה למחוק את התמונה הם נותנים לך את האפשרות באמצעות ה API שלהם וגם באמצעות האתר שלהם.
אני לא יודע כמה זה יעזור לך אבל אתה מוזמן לקרוא כאן -
https://developers.facebook.com/docs/graph-api/reference/v2.0/photo
שים לב שעל מנת למחוק תמונה מפייסבוק היא צריכה להתפרסם ע"י האפליקציה שלך ובנוסף גם לפרסום וגם למחיקה נדרש publish_actions שלא כזה פשוט לקבל ההרשאה הזאת ופייסבוק תצטרך הוכחה ממשית לחשיבות של הפעולה ורק אם הם יראו לנכון הם יאשרו לך.
ספק מאוד גדול שהם יתנו לך למטרה הזאת ובנוסף ממש פשוט לעקוף את העניין ופשוט להוריד את התמונה למחשב ולהעלות אותה לפייסבוק בצורה רגילה.